
import 'package:common_utils/common_utils.dart';

/// 字符串可空扩展
/// 提供对可空字符串的安全操作扩展方法
extension StringExtensions on String?{

  /// 当字符串为null时返回空字符串，否则返回原字符串
  ///
  /// 返回值: 非空字符串，如果原值为null则返回空字符串
  String orEmpty(){
    return this ?? '';
  }

}

/// 可迭代对象可空扩展
/// 提供对可空Iterable对象的安全操作扩展方法
extension IterableExtensions on Iterable?{

  /// 当可迭代对象为null时返回0，否则返回其长度
  ///
  /// 返回值: 可迭代对象的元素个数，如果原值为null则返回0
  int orEmpty(){
    return this?.length ?? 0;
  }

}

/// 映射对象可空扩展
/// 提供对可空Map对象的安全操作扩展方法
extension MapExtensions on Map?{

  /// 当映射对象为null时返回0，否则返回其键值对个数
  ///
  /// 返回值: 映射对象的键值对个数，如果原值为null则返回0
  int orEmpty(){
    return this?.length ?? 0;
  }

}

/// 整数可空扩展
/// 提供对可空int值的安全操作扩展方法
extension IntExtensions on int?{

  /// 当整数值为null时返回0，否则返回原值
  ///
  /// 返回值: 非空整数值，如果原值为null则返回0
  int orNull(){
    return this ?? 0;
  }

}

/// 双精度浮点数可空扩展
/// 提供对可空double值的安全操作扩展方法
extension DoubleExtensions on double?{

  /// 当双精度浮点数值为null时返回0.0，否则返回原值
  ///
  /// 返回值: 非空双精度浮点数值，如果原值为null则返回0.0
  double orNull(){
    return this ?? 0.0;
  }
}

/// 布尔值可空扩展
/// 提供对可空bool值的安全操作扩展方法
extension BoolExtensions on bool?{

  /// 当布尔值为null时返回false，否则返回原值
  ///
  /// 返回值: 非空布尔值，如果原值为null则返回false
  bool orNull(){
    return this ?? false;
  }
}

/// 判断值是否为空
///
/// [value] 待判断的值
/// 返回值: 如果值为空则返回true，否则返回false
bool isEmpty(dynamic value){
  return ObjectUtil.isEmpty(value);
}

/// 判断值是否不为空
///
/// [value] 待判断的值
/// 返回值: 如果值不为空则返回true，否则返回false
bool isNotEmpty(dynamic value){
  return ObjectUtil.isNotEmpty(value);
}


